Modern computer systems are being used to solve an ever increasing range of complex problems. The use of computers to perform tasks normally associated with human reasoning and cognition is known as artificial intelligence. As the capabilities of computers expand, they are increasingly being used to perform tasks in the field of artificial intelligence. However, although computer hardware to perform complex tasks is available, it is very difficult and time-consuming to write artificial intelligence programs.
In recent years, there has been an increasing amount of interest in solving complex problems with neural networks. A neural network is a collection of simple processors (nodes) connected together, each processor having a plurality of input and output connections. Each processor evaluates some relatively simple mathematical function of the inputs to produce an output. Some of the processor nodes receive input or produce output external to the neural network, but typically most connections run between nodes in the network. An adaptive weighting coefficient is associated with each connection. A neural network is trained to solve a particular problem by presenting the network with examples of input data for the problem and the desired outputs. The neural network adjusts the weighting coefficients to minimize the difference between the output values of the network and the desired output values of the training data. Ideally, a neural network consists of physically separate processor nodes. However, such a neural network is frequently simulated on a single processor computer system with suitable programming. As used herein, the term "neural network" shall encompass an ideal neural network of separate physical processors for each node as well as a simulated neural network executing on a single or other multiple processor computer system.
The promise of neural networks has been that they can be programmed with far less programming effort and expertise than conventional application programs designed to solve problems in the field of artificial intelligence. In theory, the neural network requires no programming at all. Instead, the system is fed a large amount of training data, and finds the solution to the problem based on this data. In reality, constructing a neural network solution is not so simple. A neural network requires that data be presented to it in a suitable form. The programmer must decide what information is to be used as input and output, how this information is to be presented, and other matters. Except in the rare case where information is stored in a form directly usable by the neural network, the programmer will have to create conversion routines to convert raw data into a form which the neural network can use, and to convert the network output into some desired form. The need to code and maintain such conversion functions reduces the benefits that would otherwise be present in neural network applications, and makes it difficult for persons without appropriate programming expertise to build such applications.
Considerable research and development effort has been directed toward making the neural network itself run more efficiently and solve a wider range of problems. However, there has been little emphasis on making the network easier to use. As the capabilities of neural networks increase, an increasing portion of the effort of developing a neural network application will be devoted to the problem of converting input data to an appropriate form for use by the network, and converting output data to an appropriate form for the user. At the same time, as increasing numbers of people develop neural network solutions, the programming sophistication of the average user is likely to decline. Accordingly, there exists a need for mechanisms that will assist the developer of neural network applications in converting input and output data.
It is therefore an object of the present invention to provide an enhanced method and apparatus for using a neural network.
Another object of this invention is to provide an enhanced method and apparatus for developing a neural network application.
Another object of this invention to provide an enhanced method and apparatus for converting data input and output of a neural network.
Another object of this invention is to reduce the cost of developing a neural network application.
Another object of this invention is to reduce the amount of time and effort required to develop a neural network application.
Another object of this invention is to reduce the level of expertise required of the developer of a neural network application.
Another object of this invention is to facilitate the modification of data representation in a neural network during the development of a neural network application.